{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-26T18:30:36.513548Z",
     "start_time": "2018-11-26T18:30:33.313825Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import requests\n",
    "import csv\n",
    "from bs4 import BeautifulSoup\n",
    "from datetime import datetime, timedelta\n",
    "import statsmodels.api as sm\n",
    "from statsmodels.tsa import stattools\n",
    "from statsmodels.tsa.seasonal import seasonal_decompose\n",
    "from statsmodels.graphics.tsaplots import plot_acf, plot_pacf\n",
    "from statsmodels.tsa.stattools import acf, pacf\n",
    "import os\n",
    "from pandas import Series\n",
    "from pandas import concat\n",
    "from pandas import read_csv\n",
    "from pandas import datetime\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "# import tensorflow as tf\n",
    "# config = tf.ConfigProto()\n",
    "# config.gpu_options.allow_growth = True\n",
    "# config.gpu_options.per_process_gpu_memory_fraction = 0.4\n",
    "# sess = tf.Session(config=config)\n",
    "\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.callbacks import EarlyStopping\n",
    "from keras.layers import LSTM\n",
    "from math import sqrt\n",
    "from matplotlib import pyplot\n",
    "from numpy import array\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "os.environ['CUDA_VISIBLE_DEVICES']=''\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (15, 6)\n",
    "\n",
    "from numpy.random import seed\n",
    "seed(1)\n",
    "from tensorflow import set_random_seed\n",
    "set_random_seed(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Note: to get more insight of data being used in LSTM/RNN/GRU training see `LSTM-eda.ipynb` file"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-26T18:30:36.653353Z",
     "start_time": "2018-11-26T18:30:36.540148Z"
    }
   },
   "source": [
    "### Load and prepare data in required format"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-26T18:30:39.841229Z",
     "start_time": "2018-11-26T18:30:37.600028Z"
    }
   },
   "outputs": [],
   "source": [
    "data = pd.read_csv('lstm_data.csv', header=None, names=['datetime', 'load'], index_col=[0], parse_dates=[0], infer_datetime_format=True)\n",
    "df = pd.DataFrame(columns=['time'] + list(map(str, range(int(data.shape[0] / 288)))))\n",
    "for idx, time in enumerate(sorted(set(data.index.time))):\n",
    "    df.loc[idx] = [time.strftime(format='%H:%M:%S')] + list(data.at_time(time)['load'].values)\n",
    "df.index = df['time']\n",
    "df = df.drop('time', 1)\n",
    "dt_df = df.diff(1, axis=1)\n",
    "dt_df = dt_df.dropna(axis=1)\n",
    "scaler = MinMaxScaler(feature_range=(-1, 1))\n",
    "scaler = scaler.fit(dt_df.values.reshape(-1, 1))\n",
    "dt_df = scaler.transform(dt_df)  # dt_df is now a numpy array\n",
    "split_idx = int(len(dt_df) * 0.8)\n",
    "train, val = dt_df[:split_idx, :], dt_df[split_idx:, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-26T18:30:43.679353Z",
     "start_time": "2018-11-26T18:30:43.675667Z"
    }
   },
   "outputs": [],
   "source": [
    "def prepare_data(data, nlags):\n",
    "    '''prepares data for LSTM model, x=last nlags values, y=(nlags+1)'th value'''\n",
    "    data_x, data_y = [], []\n",
    "    for i in range(data.shape[0]):\n",
    "        for j in range(0, data.shape[1]-nlags):\n",
    "            data_x.append(data[i, j:j+nlags])\n",
    "            data_y.append(data[i, j+nlags])\n",
    "    data_x = np.array(data_x)\n",
    "    data_y = np.array(data_y).reshape(-1, 1)\n",
    "    return data_x, data_y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-26T18:30:43.703122Z",
     "start_time": "2018-11-26T18:30:43.680958Z"
    }
   },
   "outputs": [],
   "source": [
    "nlags = 10\n",
    "train_x, train_y = prepare_data(train, nlags)\n",
    "val_x, val_y = prepare_data(val, nlags)\n",
    "train_x = train_x.reshape(train_x.shape[0], 1, nlags)\n",
    "val_x = val_x.reshape(val_x.shape[0], 1, nlags)\n",
    "df_last_nlags_plus_one = df.loc[:, df.columns[-nlags-1:]]  # slice last nlags+1 days from df, will be used in prediction of yesterday's data\n",
    "dt_df_last_nlags = df_last_nlags_plus_one.diff(1, axis=1).dropna(axis=1)  #taking last 21 days, differencing and dropping the nan value\n",
    "dt_df_last_nlags = scaler.transform(dt_df_last_nlags)  # df is now a numpy array\n",
    "X = dt_df_last_nlags.reshape(dt_df_last_nlags.shape[0], 1, nlags)  # nlags=20\n",
    "load = np.load('25nov.npy')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-27T16:34:41.410184Z",
     "start_time": "2018-11-27T16:34:41.064454Z"
    }
   },
   "outputs": [],
   "source": [
    "model = Sequential()\n",
    "model.add(LSTM(1, batch_input_shape=(1, train_x.shape[1], train_x.shape[2]), stateful=True))\n",
    "# model.add(LSTM(1, stateful=True, return_sequences=True))\n",
    "# model.add(LSTM(1, stateful=True))\n",
    "# model.add(Dense(train_y.shape[1]))\n",
    "model.add(Dense(train_y.shape[1]))\n",
    "model.compile(loss='mean_squared_error', optimizer='sgd')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-27T16:34:41.417775Z",
     "start_time": "2018-11-27T16:34:41.414030Z"
    }
   },
   "outputs": [],
   "source": [
    "# history = model.fit(train_x, train_y, epochs=20, batch_size=batch_size, verbose=1, validation_data=(val_x, val_y), shuffle=False, callbacks=[es])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-27T16:41:38.365601Z",
     "start_time": "2018-11-27T16:34:41.546407Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 44s 4ms/step - loss: 0.0369 - val_loss: 0.0224\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 40s 4ms/step - loss: 0.0341 - val_loss: 0.0212\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 41s 4ms/step - loss: 0.0305 - val_loss: 0.0211\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 41s 4ms/step - loss: 0.0282 - val_loss: 0.0214\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 42s 4ms/step - loss: 0.0270 - val_loss: 0.0216\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 49s 4ms/step - loss: 0.0264 - val_loss: 0.0216\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 42s 4ms/step - loss: 0.0259 - val_loss: 0.0215\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 38s 3ms/step - loss: 0.0256 - val_loss: 0.0215\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 39s 3ms/step - loss: 0.0253 - val_loss: 0.0214\n",
      "Train on 11270 samples, validate on 2842 samples\n",
      "Epoch 1/1\n",
      "11270/11270 [==============================] - 38s 3ms/step - loss: 0.0251 - val_loss: 0.0214\n"
     ]
    }
   ],
   "source": [
    "# fit network\n",
    "early_stopping_counter = 0\n",
    "last_loss = np.inf\n",
    "for i in range(10):\n",
    "    history = model.fit(train_x, train_y, epochs=1, batch_size=batch_size, verbose=1, validation_data=(val_x, val_y), shuffle=False)\n",
    "    model.reset_states()\n",
    "    val_loss = history.history['val_loss'][0]\n",
    "    if val_loss > last_loss:\n",
    "        early_stopping_counter += 1\n",
    "    else:    \n",
    "        early_stopping_counter = 0\n",
    "    last_loss = val_loss\n",
    "    if early_stopping_counter == 3:\n",
    "#         break\n",
    "        pass\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### NOTE: model needs to be trained for atleast 10 epochs to make decent predictions, use early stop callback afterwards"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-27T16:41:43.360121Z",
     "start_time": "2018-11-27T16:41:38.369800Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2842/2842 [==============================] - 5s 2ms/step\n"
     ]
    }
   ],
   "source": [
    "val_y_pred = model.predict(val_x, batch_size=batch_size, verbose=1)\n",
    "inverted_val_y = scaler.inverse_transform(val_y)\n",
    "inverted_val_y_pred = scaler.inverse_transform(val_y_pred)\n",
    "Y = model.predict(X, batch_size=batch_size)  # predict for today's values\n",
    "inv_Y = scaler.inverse_transform(Y)  # invert to detrended values' scale\n",
    "rescaled_Y = [x+y for x, y in zip(inv_Y[:, 0], df.iloc[:, -1])]  # last day's values added to inv_Y to get it to original scale\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "the whole process of inverting to orignal scale is same for val_y and val_y_pred (value addition only), so values are going to be close if they are now\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-27T16:41:43.372005Z",
     "start_time": "2018-11-27T16:41:43.364715Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "172.4601685911321 78.97512389836588\n"
     ]
    }
   ],
   "source": [
    "val_RMSE = np.sqrt(np.sum(np.square(np.array(inverted_val_y_pred) - np.array(inverted_val_y))) / len(inverted_val_y)) \n",
    "RMSE = np.sqrt(np.sum(np.square(np.array(rescaled_Y) - load)) / len(load)) \n",
    "print(val_RMSE, RMSE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-27T16:41:43.821622Z",
     "start_time": "2018-11-27T16:41:43.375629Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7fc02c25a0b8>"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(load)\n",
    "plt.plot(rescaled_Y)\n",
    "plt.legend(['load', 'pred'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-26T14:50:25.042244Z",
     "start_time": "2018-11-26T14:50:25.034708Z"
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### References:\n",
    "\n",
    "https://machinelearningmastery.com/time-series-forecasting-long-short-term-memory-network-python/\n",
    "https://machinelearningmastery.com/multi-step-time-series-forecasting-long-short-term-memory-networks-python/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-26T18:38:21.891195Z",
     "start_time": "2018-11-26T18:38:18.452738Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NbConvertApp] Converting notebook LSTM-v2.ipynb to script\n",
      "[NbConvertApp] Writing 9421 bytes to LSTM-v2.py\n"
     ]
    }
   ],
   "source": [
    "# !jupyter nbconvert --to script LSTM-v2.ipynb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-26T18:38:21.901581Z",
     "start_time": "2018-11-26T18:38:21.895444Z"
    }
   },
   "outputs": [],
   "source": [
    "# ## get today's load\n",
    "\n",
    "# def get_load_data(date):\n",
    "#     load=[]\n",
    "#     url = 'http://www.delhisldc.org/Loaddata.aspx?mode='\n",
    "#     print('Scraping ' + date, end=' ')\n",
    "#     resp = requests.get(url + date) # send a get request to the url, get response\n",
    "#     soup = BeautifulSoup(resp.text, 'lxml') # Yummy HTML soup\n",
    "#     table = soup.find('table', {'id':'ContentPlaceHolder3_DGGridAv'}) # get the table from html\n",
    "#     trs = table.findAll('tr') # extract all rows of the table\n",
    "#     if len(trs[1:])==288: # no need to create csv file, if there's no data\n",
    "#         with open('monthdata.csv', 'a') as f:  #'a' makes sure the values are appended at the end of the already existing file\n",
    "            \n",
    "#             for tr in trs[1:]:\n",
    "#                 time, delhi = tr.findChildren('font')[:2]\n",
    "#                 load.append(delhi.text)\n",
    "#     if len(trs[1:]) != 288:\n",
    "#         print('Some of the load values are missing..')\n",
    "#     else:\n",
    "#         print('Done')\n",
    "#     return load\n",
    "\n",
    "# yesterday = datetime.today() - timedelta(1)\n",
    "# yesterday = yesterday.strftime('%d/%m/%Y')\n",
    "# load = get_load_data(yesterday)\n",
    "# load = [float(x) for x in load]\n",
    "# np.save('25nov.npy', load)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "TF",
   "language": "python",
   "name": "tf"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
